package Trab.ES1.Interface;

import Perfil.PerfilGrupo;
import Perfil.PerfilReceita;
import Perfil.PerfilUsuario;
import Trab.ES1.Modelos.Grupo;
import Trab.ES1.Modelos.Receita;
import Trab.ES1.Modelos.Usuario;
import Trab.ES1.Utilidades.Fachada;
import java.util.ArrayList;
import java.util.List;
import java.util.Scanner;

/**
 *
 * @author Grupo H
 */
public class Busca 
{
    private Fachada fachada;
    
    public Busca()
    {
        fachada = Fachada.getInstancia();        
        inicio();
    }

    private void inicio() 
    {
        Scanner in = new Scanner(System.in);  
        int resp;
        do
        {
            System.out.println("1-Busca por ingredientes\n2-Busca por nome de usuário\n3-Busca por nome de grupo\n4-Sair");
            resp = in.nextInt();
            switch(resp)
            {
                case 1:
                    buscaPorIngredientes();
                    break;
                case 2:
                    buscaPorNomeUsuario();
                    break;
                case 3:
                    buscaPorNomeGrupo();
                    break;
                case 4:                    
                    break;
                default:
                    System.out.println("Opção inválida, tente novamente");
            }
        } while(resp != 4);
    }

    private void buscaPorIngredientes() 
    {
        Scanner in = new Scanner(System.in);
        List<String> ingredientes = new ArrayList<>();
        System.out.println("Quantos ingredientes serão buscados?");
        int totalIngredientes = in.nextInt();
        for (int i = 0; i < totalIngredientes; i++) 
        {
            System.out.println("Digite o nome do ingrediente: ");
            ingredientes.add(in.nextLine());            
        }
        
        List<Receita> receitas = fachada.buscaReceitas(ingredientes);   
        for (int i = 0; i < receitas.size(); i++) 
        {
            System.out.println((i+1)+"-"+receitas.get(i).getNome());
        }
        System.out.println("Digite o número da receita a ser visualizada ou 0 para visualizar nenhuma: ");
        int resp = in.nextInt();
        if(resp > 0)
            new PerfilReceita(receitas.get(resp), false).exibePerfil();
        //else        
            //Fazer alguma coisa aqui.
    }

    private void buscaPorNomeUsuario() 
    {
        Scanner in = new Scanner(System.in);
        System.out.println("Digite o nome do usuário a ser buscado:");
        String nomeUsuario = in.nextLine();
        
        Usuario u = fachada.buscaUsuario(nomeUsuario);
        new PerfilUsuario(u, false).exibePerfil();
    }

    private void buscaPorNomeGrupo() 
    {
        Scanner in = new Scanner(System.in);
        System.out.println("Digite o nome do grupo a ser buscado:");
        String nomeGrupo = in.nextLine();
        
        Grupo g = fachada.buscaGrupo(nomeGrupo);
        new PerfilGrupo(g, false).exibePerfil();
    }   
}
